“Port aggregation” (also called link aggregation) is a method by which two or more network connections (sometimes called links) are grouped together at a multi-port network device to create a single logical connection (sometimes called a single logical link). Network traffic can be “load balanced” between multiple aggregated ports of the multi-path network device, thereby increasing bandwidth available for the single logical connection without having to increase the bandwidth of any of the associated underlying network connections. Typically associated with port aggregation is another method called “port fail-over.” If functionality of one physical port is lost, then another port assumes the functionality of the lost port such that the logical connection is maintained. Such a port fail-over method provides increased reliability for the single logical network connection, in comparison with the reliability of a single physical network connection.
FIG. 1 (Prior Art) is a diagram of a local device 1 that supports port aggregation, load balancing and fail-over functionality. In the illustrated example, local device 1 is both to receive network information from and to transmit network information to a remote device 2. Local device 1 includes a host portion 3 as well as a network interface device portion 4. The network interface device portion 4 may take the form of an Intelligent Network Interface Card (INIC) providing multiple media access and control (MAC) ports. Host portion 3 typically includes a central processing unit (CPU) that executes a multi-layer protocol processing stack 5. Stack 5 includes a network interface device driver 6, a port aggregation driver 7, an IP protocol processing layer 8, a TCP protocol processing layer 9, and one or more upper layers 10. In the example of FIG. 1, the port aggregation driver and the network interface device driver are together considered to be a network access layer 11 of the stack.
Incoming packets received onto local device 1 are received onto network interface device 4 and then pass through the NID device driver 6 and the port aggregation driver 7 and then up through the various layers of the stack 5 to upper layer 10. In the case of a read, for example, the upper layer 10 of the stack may be an Internet SCSI (ISCSI) layer that identifies a location in destination storage 12 where the data is to be placed. The data is transferred in the form a multi-packet message. Each packet of the message is received by local device 1, passes through network interface device 4, and is processed by each successive layer of the protocol stack 5, thereby often consuming significant processing resources of the CPU that executes the stack. This often time consuming protocol processing through successive layers of the protocol stack is called “slow-path” processing.
To offload the CPU of this protocol processing load, special functionality is built into network interface device 4 and a special ATCP stack portion 13 is added to stack 5. Accordingly, certain types of network communications are handled in a “fast-path” whereby IP and TCP protocol processing tasks are handled by the network interface device 4, thereby offloading the CPU of the host of these tasks. In the example of a read, the data payloads of the various packets of the message are placed directly into the destination storage 12 at a location identified by upper layer 10. The data payloads are placed into destination storage 12 without stack 5 doing any or substantially any IP or TCP protocol processing. For additional information on such a network interface device, on an ATCP stack, and on fast-path operation, see the discussion of the INIC and the associated ATCP stack in U.S. Pat. No. 6,247,060 (the subject matter of which is incorporated herein by reference).
To support port aggregation, load balancing and fail-over functionality, a Fast-Etherchannel switch 13 is provided such that local device 1 can send or receive information to remote device 2 via two ports (Port 1 or Port 2) and two physical connections 14 and 15, rather than just one port and one physical connection. In the case where Fast-Etherchannel switch 13 is a rack-mounted Hewlett-Packard HPJ4121A ProCurve 4000M switch, both Port 1 and Port 2 are assigned to have the same media access address (MAC address A in this example). Both of the ports Port 1 and Port 2 are grouped together into a “team” for port aggregation purposes. If transmission and reception for a TCP connection were passing over physical connection 14 and Port 1, and then communications over physical connection 14 were for some reason to fail, then transmission and reception for the TCP connection would be communicated via physical connection 15 and Port 2. Although this scheme works in that fast-path communications are supported in combination with port aggregation, load balancing and fail-over functionality, the need to provide the Fast-Etherchannel switch is undesirable. Fast-Etherchannel switches may be expensive. A solution is desired.